There is a current trend in software design toward modeling and delivering software logic and applications as services. With the growth of the Internet, and in particular, the maturing of the World Wide Web (“Web”), application developers are increasingly delivering these services as Web services.
As an example, an application developer may need to write some business logic and may want to package up the business logic in a way to expose it as a Web service. Typically, the developer will have to define an interface with the necessary input data, and will also have to define the output. The developer then writes the business logic that does some amount of work using the designed input and which creates the output. In addition to writing the business logic, the developer will also have to write logic for ancillary requirements to the business logic, such as auditing, security, error handling, caching, etc.
For example, the service may need to cache the output value. In order to properly incorporate this feature into the service, the developer will have to (1) check the value of the outputs, (2) create a kind of key based on those values, (3) match the key with a possible value in the cache and return the value if there is a match, otherwise proceed to the service logic to create the output value, and (4) add it to the cache before returning it back to the caller. The developer will need to design and implement other attributes of the cache, such as a strategy for expiring an item in the cache, a strategy for notification in the instance an item in the cache is expired, etc.
The developer will need to perform a similar task for each of the ancillary requirements. Additionally, because Web services typically communicate over a network, the developer will need to design and code the communication infrastructure for the service. Developing and delivering a large number of services in this manner can get tedious, especially given the fact that the ancillary requirements and the communication infrastructure do not contribute to the business logic. Further, the cost and complexity of implementing the Web services is increasingly becoming prohibitive, particularly for small to medium sized organizations.
One reason for this is that while the business logic generally does not change, the underlying and ancillary technologies are very likely to change over time. Presently, numerous standards that address various aspects of Web services are evolving and/or being developed. Because the Web services typically include the ancillary logic, the Web services and, particularly, the ancillary logic will have to be modified and enhanced as these standards evolve and develop in order to take advantage of the standards.